Node.js Express.js

வலை பயன்பாடுகள் மற்றும் APIகளை உருவாக்க Node.js இன் மிகவும் பிரபலமான வலை பயன்பாட்டுக் கட்டமைப்பைக் கற்றுக்கொள்ளுங்கள்

Express.js என்றால் என்ன?

Express.js (அல்லது வெறுமனே Express) என்பது வலை பயன்பாடுகள் மற்றும் APIகளை உருவாக்க வடிவமைக்கப்பட்ட மிகவும் பிரபலமான Node.js வலை பயன்பாட்டுக் கட்டமைப்பாகும்.

இது பெரும்பாலும் Node.js க்கான நடைமுறை தரநிலை சர்வர் கட்டமைப்பு என்று அழைக்கப்படுகிறது.

முக்கிய பண்புகள்:

குறைந்தபட்ச மற்றும் நெகிழ்வான

அடிப்படை அம்சங்களை மட்டுமே வழங்குகிறது

கருத்து இல்லாத

உங்கள் பயன்பாட்டை எவ்வாறு கட்டமைப்பது என்பதை நீங்கள் தீர்மானிக்கிறீர்கள்

இலகுவான மற்றும் வேகமான

குறைந்த மேலோட்டம் மற்றும் அதிவேக செயல்திறன்

மிடில்வேர் மூலம் விரிவாக்கக்கூடிய

மிடில்வேர் செயல்பாடுகள் மூலம் செயல்பாட்டை விரிவுபடுத்தவும்

பெரிய சூழல்

பிளக்கின்கள் மற்றும் நீட்டிப்புகளின் மிகப்பெரிய சூழல்

ஏன் Express.js ஐத் தேர்ந்தெடுக்க வேண்டும்?

Express அடிப்படை வலை பயன்பாட்டு அம்சங்களின் ஒரு மெல்லிய அடுக்கை Node.js அம்சங்களை மறைக்காமல் வழங்குகிறது.

இது வழங்குகிறது:

Express உடன் தொடங்குதல்

Express ஏதேனும் Node.js திட்டத்தில் சேர்க்கப்படலாம். ஒரு புதிய Express பயன்பாட்டைத் தொடங்குவது எப்படி என்பது இங்கே.

முன்நிபந்தனைகள்

நீங்கள் தொடங்குவதற்கு முன், உங்களிடம் இருப்பதை உறுதிப்படுத்திக் கொள்ளுங்கள்:

Express ஐ நிறுவுதல்

உங்கள் Node.js பயன்பாட்டில் Express ஐப் பயன்படுத்த, முதலில் அதை நிறுவ வேண்டும்:

npm install express

Express ஐ நிறுவி உங்கள் package.json சார்புகளில் சேமிக்க:

npm install express --save

Hello World எடுத்துக்காட்டு

Express உடன் ஒரு எளிய "Hello World" பயன்பாட்டை உருவாக்குவோம்.

இந்த எடுத்துக்காட்டு ஒரு Express பயன்பாட்டின் அடிப்படை கட்டமைப்பை நிரூபிக்கிறது.

முக்கிய கூறுகள்:

const express = require('express');
const app = express();
const port = 8080;

// Define a route for GET requests to the root URL
app.get('/', (req, res) => {
  res.send('Hello World from Express!');
});

// Start the server
app.listen(port, () => {
  console.log(`Example app listening at http://localhost:${port}`);
});

இந்த குறியீட்டை app.js என்ற கோப்பில் சேமித்து Node.js உடன் இயக்கவும்:

node app.js

பின்னர், உங்கள் உலாவியைத் திறந்து http://localhost:8080 க்குச் சென்று "Hello World" செய்தியைப் பார்க்கவும்.

அடிப்படை ரூட்டிங்

ரூட்டிங் என்பது வெவ்வேறு HTTP முறைகளைப் (GET, POST, PUT, DELETE, முதலியன) பயன்படுத்தி குறிப்பிட்ட இறுதிப் புள்ளிகளுக்கு (URIகள்) கிளையன்ட் கோரிக்கைகளுக்கு ஒரு பயன்பாடு எவ்வாறு பதிலளிக்கிறது என்பதைக் குறிக்கிறது.

Express HTTP முறைகளுடன் தொடர்புடைய ரூட்டுகளை வரையறுக்க எளிய முறைகளை வழங்குகிறது:

const express = require('express');
const app = express();
const port = 8080;

// Respond to GET request on the root route
app.get('/', (req, res) => {
  res.send('GET request to the homepage');
});

// Respond to POST request on the root route
app.post('/', (req, res) => {
  res.send('POST request to the homepage');
});

// Respond to GET request on the /about route
app.get('/about', (req, res) => {
  res.send('About page');
});

// Catch all other routes
app.all('*', (req, res) => {
  res.status(404).send('404 - Page not found');
});

// Start the server
app.listen(port, () => {
  console.log(`Example app listening at http://localhost:${port}`);
});

ரூட் அளவுருக்கள்

ரூட் அளவுருக்கள் URL இல் குறிப்பிட்ட நிலைகளில் மதிப்புகளைப் பிடிக்கும் பெயரிடப்பட்ட URL பிரிவுகளாகும்.

அவை பாதையில் ஒரு கோலன் : முன்னொட்டுடன் குறிப்பிடப்படுகின்றன.

எடுத்துக்காட்டு: /users/:userId/books/:bookId

இந்த எடுத்துக்காட்டில், userId மற்றும் bookId ஆகியவை req.params மூலம் அணுகக்கூடிய ரூட் அளவுருக்களாகும்.

const express = require('express');
const app = express();
const port = 8080;

// Route with parameters
app.get('/users/:userId/books/:bookId', (req, res) => {
  // Access parameters using req.params
  res.send(`User ID: ${req.params.userId}, Book ID: ${req.params.bookId}`);
});

app.listen(port, () => {
  console.log(`Example app listening at http://localhost:${port}`);
});

வினா அளவுருக்கள்

வினா அளவுருக்கள் ஒரு URL இல் ? க்குப் பிறகு தோன்றும் விசை-மதிப்பு ஜோடிகளாகும்.

அவை Express மூலம் தானாகவே பாகுபடுத்தப்பட்டு req.query இல் கிடைக்கின்றன.

எடுத்துக்காட்டு URL: http://example.com/search?q=express&page=2

இந்த URL இல், q=express மற்றும் page=2 ஆகியவை req.query.q மற்றும் req.query.page ஆக அணுகக்கூடிய வினா அளவுருக்களாகும்.

const express = require('express');
const app = express();
const port = 8080;

// Route handling query parameters
app.get('/search', (req, res) => {
  // Access query parameters using req.query
  const { q, category } = req.query;
  res.send(`Search query: ${q}, Category: ${category || 'none'}`);
});

app.listen(port, () => {
  console.log(`Example app listening at http://localhost:${port}`);
});

இந்த ரூட்டை இதுபோன்ற URL உடன் அணுகவும்: http://localhost:8080/search?q=express&category=framework

Express இல் மிடில்வேர்

மிடில்வேர் செயல்பாடுகள் Express பயன்பாடுகளின் முதுகெலும்பாகும்.

அவை அணுகலைக் கொண்டுள்ளன:

மிடில்வேர் முடியும்:

உள்ளமைக்கப்பட்ட மிடில்வேர்

Express பல பயனுள்ள மிடில்வேர் செயல்பாடுகளை உள்ளடக்கியது:

const express = require('express');
const app = express();
const port = 8080;

// Middleware to parse JSON request bodies
app.use(express.json());

// Middleware to parse URL-encoded request bodies
app.use(express.urlencoded({ extended: true }));

// Middleware to serve static files from a directory
app.use(express.static('public'));


// POST route that uses JSON middleware
app.post('/api/users', (req, res) => {
  // req.body contains the parsed JSON data
  console.log(req.body);
  res.status(201).json({ message: 'User created', user: req.body });
});

app.listen(port, () => {
  console.log(`Example app listening at http://localhost:${port}`);
});

Express இல் பிழை கையாளுதல்

Express இல் பிழை கையாளுதல் நான்கு வாதங்களைக் கொண்ட சிறப்பு மிடில்வேர் செயல்பாடுகள் மூலம் செய்யப்படுகிறது:

(err, req, res, next).

முக்கிய புள்ளிகள்:

கோரிக்கை செயலாக்கத்தின் போது ஏற்படும் பிழைகளைப் பிடிக்க Express இயல்புநிலை பிழை கையாளுநருடன் வருகிறது:

const express = require('express');
const app = express();
const port = 8080;

// Route that may throw an error
app.get('/error', (req, res) => {
  // Simulating an error
  throw new Error('Something went wrong!');
});

// Route that uses next(error) for asynchronous code
app.get('/async-error', (req, res, next) => {
  // Simulating an asynchronous operation that fails
  setTimeout(() => {
    try {
      // Something that might fail
      const result = nonExistentFunction(); // This will throw an error
      res.send(result);
    }
    catch (error) {
      next(error); // Pass errors to Express
    }
    }, 100);
});

// Custom error handling middleware
// Must have four parameters to be recognized as an error handler
app.use((err, req, res, next) => {
  console.error(err.stack);
  res.status(500).send('Something broke!');
});

app.listen(port, () => {
  console.log(`Example app listening at http://localhost:${port}`);
});

நிலையான கோப்புகளைச் சேவை செய்தல்

Express உள்ளமைக்கப்பட்ட express.static மிடில்வேர் பயன்படுத்தி படங்கள், CSS, மற்றும் JavaScript போன்ற நிலையான கோப்புகளைச் சேவை செய்ய முடியும்.

சிறந்த நடைமுறைகள்:

படங்கள், CSS கோப்புகள் மற்றும் JavaScript கோப்புகள் போன்ற நிலையான கோப்புகளைச் சேவை செய்ய, உள்ளமைக்கப்பட்ட express.static மிடில்வேர் செயல்பாட்டைப் பயன்படுத்தவும்:

const express = require('express');
const path = require('path');
const app = express();
const port = 8080;

// Serve static files from the 'public' directory
app.use(express.static('public'));

// You can also specify a virtual path prefix
app.use('/static', express.static('public'));

// Using absolute path (recommended)
app.use('/assets', express.static(path.join(__dirname, 'public')));

app.get('/', (req, res) => {
  res.send(`
    

Static Files Example

Logo `); }); app.listen(port, () => { console.log(`Example app listening at http://localhost:${port}`); });

இது உங்கள் ஸ்கிரிப்ட்டின் அதே அடைவில் படங்கள், CSS மற்றும் JavaScript கோப்புகளுக்கான துணை அடைவுகளுடன் public என்ற பெயரில் ஒரு அடைவு உள்ளது என்று கருதுகிறது.

தனி கோப்புகளில் ரூட்டிங்

சிறந்த அமைப்பிற்கு, Express Router ஐப் பயன்படுத்தி தனி கோப்புகளில் ரூட்டுகளை வரையறுக்கலாம்:

routes/users.js

const express = require('express');
const router = express.Router();

// Middleware specific to this router
router.use((req, res, next) => {
  console.log('Users Router Time:', Date.now());
  next();
});

// Define routes
router.get('/', (req, res) => {
  res.send('Users home page');
});

router.get('/:id', (req, res) => {
  res.send(`User profile for ID: ${req.params.id}`);
});

module.exports = router;

routes/products.js

const express = require('express');
const router = express.Router();

// Define routes
router.get('/', (req, res) => {
  res.send('Products list');
});

router.get('/:id', (req, res) => {
  res.send(`Product details for ID: ${req.params.id}`);
});

module.exports = router;

app.js (முக்கிய கோப்பு)

const express = require('express');
const usersRouter = require('./routes/users');
const productsRouter = require('./routes/products');

const app = express();
const port = 8080;

// Use the routers
app.use('/users', usersRouter);
app.use('/products', productsRouter);

app.get('/', (req, res) => {
  res.send('Main application home page');
});

app.listen(port, () => {
  console.log(`Example app listening at http://localhost:${port}`);
});

டெம்ப்ளேட் இயந்திரங்கள்

டைனமிக் HTML ஐ உருவாக்க Express டெம்ப்ளேட் இயந்திரங்களுடன் கட்டமைக்கப்படலாம்:

const express = require('express');
const app = express();
const port = 8080;

// Set the view engine to EJS
app.set('view engine', 'ejs');

// Set the directory where templates are located
app.set('views', './views');

// Route that renders a template
app.get('/', (req, res) => {
  const data = {
    title: 'Express Template Example',
    message: 'Hello from EJS!',
    items: ['Item 1', 'Item 2', 'Item 3']
  };

  // Renders the views/index.ejs template
  res.render('index', data);
});

app.listen(port, () => {
  console.log(`Example app listening at http://localhost:${port}`);
});

இந்த எடுத்துக்காட்டைப் பயன்படுத்த, நீங்கள் EJS டெம்ப்ளேட் இயந்திரத்தை நிறுவ வேண்டும்:

npm install ejs

மற்றும் views/index.ejs இல் ஒரு கோப்பை உருவாக்கவும்:

<!DOCTYPE html>
<html>
<head>
  <title><%= title %></title>
</head>
<body>
  <h1><%= title %></h1>
  <p><%= message %></p>

  <h2>Items:</h2>
  <ul>
    <% items.forEach(function(item) { %>
      <li><%= item %></li>
    < % }); %>
  </ul>
</body>
</html>

Express பயன்பாட்டு ஜெனரேட்டர்

Express பயன்பாட்டு ஜெனரேட்டர் என்பது ஒரு கருவியாகும், இது ஒரு Express பயன்பாட்டு எலும்புக்கூட்டை விரைவாக உருவாக்க உதவுகிறது.

முக்கிய அம்சங்கள்:

நிறுவல்: npm install -g express-generator

பயன்பாடு: express --view=pug myapp

Express ஒரு பயன்பாட்டு ஜெனரேட்டர் கருவியை வழங்குகிறது, இது விரைவாக ஒரு பயன்பாட்டு எலும்புக்கூட்டை உருவாக்க உதவுகிறது:

# Install the generator globally
npm install -g express-generator

# Create a new Express application
express --view=ejs myapp

# Navigate to the app directory
cd myapp

# Install dependencies
npm install

# Start the app
npm start

இது பின்வரும் அடைவு கட்டமைப்புடன் ஒரு பயன்பாட்டை உருவாக்குகிறது:

myapp/
├── app.js
├── bin/
│  └── www
├── package.json
├── public/
│  ├── images/
│  ├── javascripts/
│  └── stylesheets/
│    └── style.css
├── routes/
│  ├── index.js
│  └── users.js
└── views/
  ├── error.ejs
  └── index.ejs

Express.js சிறந்த நடைமுறைகள்

வலுவான, பராமரிக்கக்கூடிய Express பயன்பாடுகளை உருவாக்க இந்த சிறந்த நடைமுறைகளைப் பின்பற்றவும்:

திட்ட கட்டமைப்பு

உங்கள் குறியீட்டை அம்சம் அல்லது கூறு மூலம் ஒழுங்கமைக்கவும்

சூழல் மாறிகள்

கட்டமைப்பிற்கு dotenv ஐப் பயன்படுத்தவும்

பிழை கையாளுதல்

பிழை கையாளுதலை மையப்படுத்தவும்

லாக்கிங்

morgan அல்லது winston போன்ற லாக்கிங் நூலகத்தைப் பயன்படுத்தவும்

பாதுகாப்பு

பாதுகாப்பு சிறந்த நடைமுறைகளை செயல்படுத்தவும் (helmet, விகித வரம்பு, முதலியன)

சரிபார்ப்பு

express-validator போன்ற நூலகங்களைப் பயன்படுத்தி உள்ளீட்டைச் சரிபார்க்கவும்

பாதுகாப்பு சிறந்த நடைமுறைகள்

Helmet ஐப் பயன்படுத்தவும் - பல்வேறு HTTP தலைப்புகளை அமைப்பதன் மூலம் உங்கள் Express பயன்பாடுகளைப் பாதுகாக்கவும்
கட்டமைப்பிற்கு சூழல் மாறிகளைப் பயன்படுத்தவும்
சரியான பிழை கையாளுதலை செயல்படுத்தவும்
உற்பத்தியில் HTTPS ஐப் பயன்படுத்தவும்
ஊசி தாக்குதல்களைத் தடுக்க பயனர் உள்ளீட்டைச் சரிபார்க்கவும்
பொருத்தமான CORS கொள்கைகளை அமைக்கவும்
const express = require('express');
const helmet = require('helmet');
const cors = require('cors');
const app = express();

// Security middleware
app.use(helmet());

// CORS configuration
app.use(cors({
  origin: 'https://example.com',
  methods: ['GET', 'POST'],
  allowedHeaders: ['Content-Type', 'Authorization']
}));

// Other middleware and routes
// ...

பயிற்சி

Express.js என்றால் என்ன?

Node.js க்கான ஒரு தரவுத்தள அமைப்பு
✗ தவறு! Express.js ஒரு தரவுத்தள அமைப்பு அல்ல
Node.js க்கான மிகவும் பிரபலமான வலை பயன்பாட்டுக் கட்டமைப்பு
✓ சரி! Express.js என்பது Node.js க்கான மிகவும் பிரபலமான வலை பயன்பாட்டுக் கட்டமைப்பாகும்
ஒரு JavaScript இயக்க நேர சூழல்
✗ தவறு! JavaScript இயக்க நேர சூழல் Node.js ஆகும், Express.js அல்ல
Node.js க்கான ஒரு சோதனைக் கட்டமைப்பு
✗ தவறு! Express.js ஒரு சோதனைக் கட்டமைப்பு அல்ல, இது ஒரு வலை பயன்பாட்டுக் கட்டமைப்பாகும்